/********************************
*文件名：继承的方式
*创建人：junwen
*日期：2020.11.10
*描述：继承的方式
*修改人：
*日期：
*版本：1.0
*********************************/
#include <iostream>
#include <string>
using namespace std;
//继承方式
//公共继承
class Base1 {
public:
	int m_a;
protected:
	int m_b;
private:
	int m_c;
};

class son1:public Base1
{
public:
	void func()
	{
		m_a = 10;//父类中公共成员，到子类也是公共成员
		m_b = 10;//父类中保护成员，到子类也是保护成员
		// 父类中私有成员，到子类也是私有成员
	}
};

//保护继承
class son2:protected Base1
{
public:
	void func()
	{
		m_a = 10;//父类中公共成员，到子类是保护成员
		m_b = 10;//父类中保护成员，到子类是保护成员
		// 父类中私有权限，到子类也是私有成员
	}

};
//私有继承
class son3 :private Base1
{
public:
	void func()
	{
		m_a = 10;//父类中公共成员，到子类是私有成员
		m_b = 10;//父类中保护成员，到子类私有成员
		// 父类中私有权限，到子类也是私有权限
	}

};

void test01()
{
	son1 s1;
	s1.m_a = 100;
	//s1.m_b = 100;//son1中是保护成员，类外访问不到
}

void test02()
{
	son2 s2;
	//s2.m_a = 100;//son2中是保护成员，类外访问不到
	//s2.m_b = 100;//son2中是保护成员，类外访问不到
}

void test03()
{
	son3 s3;
	//s3.m_a = 100;//son3中是私有成员，类外访问不到
	//s3.m_b = 100;//son3中是私有成员，类外访问不到
}
int main()
{
	test01();
	system("pause");
	return 0;
}